package DataBase;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.swing.JOptionPane;

public class Conexion {

	private Connection conn;
	
	public Conexion() {
	
		conn=null;
		CrearDB();
	}
	
	
	public void CrearDB(){
		
		  try{
		         //obtenemos el driver de para mysql
		         Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
		         //obtenemos la conexión
		         conn = DriverManager.getConnection("jdbc:derby:.\\DB\\Derby.DB;create=true");
		         if (conn!=null){
		            JOptionPane.showMessageDialog(null,"OK base de datos listo");
		         //   String creartabla="create table usuario( id_usuario INT PRIMARY KEY, nombre varchar(20), apellidos varchar(20), password varchar(20) )";
		           
		            String tienda="create table tienda( id_tienda INT PRIMARY KEY, nombre VARCHAR(20), direccion VARCHAR(30), telefono INT )"; 
		            String articulo="CREATE TABLE articulo(id_articulo INT PRIMARY KEY,nombre VARCHAR(20),marca VARCHAR(20),precio INT,categoria VARCHAR(20),stock INT, tienda INT REFERENCES tienda(id_tienda))";
		            String empleado="CREATE TABLE empleado(dni INT PRIMARY KEY,pass INT,nombre CHAR(20), rol VARCHAR(10), direccion CHAR(30), telefono INT, fechainicio DATE, tienda INT REFERENCES tienda(id_tienda))";
		            String ventas="CREATE TABLE ventas(id_venta INT PRIMARY KEY,importe INT,fecha DATE,estado CHAR(1))";
		            String contieneVentas="CREATE TABLE contieneVentas(item INT, sale INT, unidades INT, PRIMARY KEY(item,sale), FOREIGN KEY(item) REFERENCES articulo(id_articulo), FOREIGN KEY(sale) REFERENCES ventas(id_venta))";
		            String pedido="CREATE TABLE pedido(id_pedido INT PRIMARY KEY,tipo CHAR(1),importe INT,fecha DATE,estado CHAR(1))";//, employe INT REFERENCES empleado(dni) )";
		            String proveedor="CREATE TABLE proveedor( id_proveedor INT PRIMARY KEY, nombre VARCHAR(20), direccion VARCHAR(30), telefono INT )";
		            String contienePedido="CREATE TABLE contienePedidos(itemp INT, order INT,prov INT,unidades INT,PRIMARY KEY(itemp,order,prov), FOREIGN KEY(itemp) REFERENCES articulo(id_articulo), FOREIGN KEY(order) REFERENCES pedido(id_pedido), FOREIGN KEY(prov) REFERENCES proveedor(id_proveedor))";
		            
		           
		            
		            
		            
		            
		            //************************************************************//
		            String desc="disconnect;";
		            try {
		        //    PreparedStatement pstm = conn.prepareStatement(creartabla);
		          //  pstm.execute();
		           // pstm.close();
		            
		            ////////////////////////
		            PreparedStatement pstm = conn.prepareStatement(tienda);
		            pstm.execute();
		            pstm.close();
		            
		            PreparedStatement pstm2 = conn.prepareStatement(articulo);
		            pstm2.execute();
		            pstm2.close();
		            
		            PreparedStatement pstm3 = conn.prepareStatement(empleado);
		            pstm3.execute();
		            pstm3.close();
		            
		            PreparedStatement pstm4 = conn.prepareStatement(ventas);
		            pstm4.execute();
		            pstm4.close();
		            
		            PreparedStatement pstm5 = conn.prepareStatement(contieneVentas);
		            pstm5.execute();
		            pstm5.close();
		            
		            PreparedStatement pstm6 = conn.prepareStatement(pedido);
		            pstm6.execute();
		            pstm6.close();
		            
		           
		            
		            PreparedStatement pstm8 = conn.prepareStatement(proveedor);
		            pstm8.execute();
		            pstm8.close();
		            
		            PreparedStatement pstm7 = conn.prepareStatement(contienePedido);
		            pstm7.execute();
		            pstm7.close();
		            ///////////////////////
		            
		            PreparedStatement pstm9 = conn.prepareStatement(desc);
		            pstm9.execute();
		            pstm9.close();
		            
		           JOptionPane.showMessageDialog(null,"BD Creada correctamente");
		        } catch (SQLException ex) {
		            JOptionPane.showMessageDialog(null, ex.getLocalizedMessage());
		        }
		         }
		      }catch(SQLException e){
		       JOptionPane.showMessageDialog(null,e.getMessage(),"Error" ,  JOptionPane.ERROR_MESSAGE);
		      }catch(ClassNotFoundException e){
		         JOptionPane.showMessageDialog(null,e.getMessage(),"Error" ,  JOptionPane.ERROR_MESSAGE);
		      }
		  
	   //  return conn;	  
	}
	
    public Connection AccederBD(){
        try{
          //obtenemos el driver de para mysql
          Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
          //obtenemos la conexión
          conn = DriverManager.getConnection("jdbc:derby:.\\DB\\Derby.DB");
          if (conn!=null){
             JOptionPane.showMessageDialog(null,"OK base de datos listo");
          }
       }catch(SQLException e){
        JOptionPane.showMessageDialog(null,e.getMessage(),"Error" ,  JOptionPane.ERROR_MESSAGE);
       }catch(ClassNotFoundException e){
          JOptionPane.showMessageDialog(null,e.getMessage(),"Error" ,  JOptionPane.ERROR_MESSAGE);
       }
        return conn;
   }
      
       public void cerracon (){
         try {
             conn.close();
         } catch (SQLException ex) {
             Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE, null, ex);
         }
    }
	
	
	
}
